var isValidDate = require('./isValidDate')

/**
 * 判断两个日期是否相等
 * @param {Any} d1 第一个日期
 * @param {Any} d2 第二个日期
 * @param {String} format 默认判断时间戳，可配置 [yyyy | MM | dd | yyyyMMdd]
 * @returns {Boolean}
 */
function isDateSame(d1, d2, format = '') {
  if (d1 && d2) {
    const date1 = new Date(d1)
    const date2 = new Date(d2)

    // 日期为无效值
    if (!isValidDate(date1) || !isValidDate(date2)) return false

    const parseDate = {
      '': () => +date1 === +date2,
      yyyy: () => date1.getFullYear() === date2.getFullYear(),
      MM: () => date1.getMonth() + 1 === date2.getMonth() + 1,
      dd: () => date1.getDate() === date2.getDate(),
      yyyyMMdd: () =>
        '' + date1.getFullYear() + (date1.getMonth() + 1) + date1.getDate() ===
        '' + date2.getFullYear() + (date2.getMonth() + 1) + date2.getDate(),
    }

    if (parseDate[format]) {
      return parseDate[format]()
    }
    // 第三个参数不符合预设值
    return false
  }
  // d1 或 d2 不存在
  return false
}

module.exports = isDateSame

console.log(isDateSame('2018-12-01', '2018-12-01')) // true
console.log(isDateSame('2020-12-02', '2022-12-01', 'yyyy')) // 判断是否同一年 false
console.log(isDateSame('2020-12-02', '2022-12-01', 'MM')) // 判断是否同一月 true
console.log(isDateSame(new Date(), new Date(), 'dd')) // 判断是否同一日 true
console.log(isDateSame(new Date(), new Date(), 'yyyyMMdd')) // 判断是否同年同月同日 true
